//
//  EmoticnTextViewsssssss.swift
//  EmoticonKeyBoard
//
//  Created by apple on 15/12/28.
//  Copyright © 2015年 apple. All rights reserved.
//

import UIKit

class EmoticnTextViewsssssss: UITextView {
    //将表情图片转换为表情文本
    func funllText() -> String {
        //获取到属性文本中的内容信息
        let attrText = attributedText
        
        var strM = String()
        //遍历属性文本的内容
        attrText.enumerateAttributesInRange(NSRange(location: 0, length: attrText.length), options: []) { (dict, range, _) -> Void in
            print(dict)
            print("---")
            print(range)
            if let attachment = dict["NSAttachment"] as? EmoticonTextView {
                //包含附件的属性文本 有图片
                print("有图片")
                strM += attachment.chs ?? ""
                
            } else {
                //不包含附件的属性文本 没有图片
                print("没图片")
                let str = (self.text as NSString).substringWithRange(range)
                strM += str
            }
        }
        return strM
    }

    func insertEmoticon(em: Emoticon) {
        if em.isEmpty {
            print("点击空表情")
            return
        }
        
        if em.isDelete {
            //回删
            deleteBackward()
            return
        }
        
        //是emoji表情
        if em.code != nil {
            //文本替换
            replaceRange(selectedTextRange!, withText: em.emojiStr ?? "")
            
            return
        }
        
        //程序走到这里 肯定点击的是图片  这个时候就需要在文本中显示图片
        let imageText = EmoticonTextView().emoticonTextToImageText(em , font: font!)
        
        
        //记录光标的位置
        let range = selectedRange
        
        //4将属性文本进行替换
        //获取当前显示文本的属性文本
        let strM = NSMutableAttributedString(attributedString: attributedText)
        strM.replaceCharactersInRange(selectedRange, withAttributedString: imageText)
        
        //替换textView的属性文本
        attributedText = strM
        
        //替换完后回复光标
        selectedRange = NSMakeRange(range.location + 1, 0)
        //主动的去调用协议方法
        delegate?.textViewDidChange?(self)
    }


}
